﻿using System;
using SharpSqlAnalyzer.nodes;

namespace SharpSqlAnalyzer.stmt.oracle
{
	// Token: 0x0200013B RID: 315
	public class TPlsqlCreateType_Placeholder : TCustomSqlStatement
	{
		// Token: 0x170001E7 RID: 487
		// (get) Token: 0x06000A60 RID: 2656 RVA: 0x00304DF7 File Offset: 0x00302FF7
		// (set) Token: 0x06000A5F RID: 2655 RVA: 0x00304DEE File Offset: 0x00302FEE
		public virtual EOracleCreateType CreatedType
		{
			get
			{
				return this.createdType;
			}
			set
			{
				this.createdType = value;
			}
		}

		// Token: 0x170001E8 RID: 488
		// (get) Token: 0x06000A62 RID: 2658 RVA: 0x00304E08 File Offset: 0x00303008
		// (set) Token: 0x06000A61 RID: 2657 RVA: 0x00304DFF File Offset: 0x00302FFF
		public virtual int Kind
		{
			get
			{
				return this.kind;
			}
			set
			{
				this.kind = value;
			}
		}

		// Token: 0x170001E9 RID: 489
		// (get) Token: 0x06000A63 RID: 2659 RVA: 0x00304E10 File Offset: 0x00303010
		// (set) Token: 0x06000A64 RID: 2660 RVA: 0x00304E18 File Offset: 0x00303018
		public virtual TPlsqlCreateType ObjectStatement
		{
			get
			{
				return this.objectStatement;
			}
			set
			{
				this.objectStatement = value;
			}
		}

		// Token: 0x170001EA RID: 490
		// (get) Token: 0x06000A65 RID: 2661 RVA: 0x00304E21 File Offset: 0x00303021
		// (set) Token: 0x06000A66 RID: 2662 RVA: 0x00304E29 File Offset: 0x00303029
		public virtual TPlsqlVarrayTypeDefStmt VarrayStatement
		{
			get
			{
				return this.varrayStatement;
			}
			set
			{
				this.varrayStatement = value;
			}
		}

		// Token: 0x170001EB RID: 491
		// (get) Token: 0x06000A67 RID: 2663 RVA: 0x00304E32 File Offset: 0x00303032
		// (set) Token: 0x06000A68 RID: 2664 RVA: 0x00304E3A File Offset: 0x0030303A
		public virtual TPlsqlTableTypeDefStmt NestedTableStatement
		{
			get
			{
				return this.nestedTableStatement;
			}
			set
			{
				this.nestedTableStatement = value;
			}
		}

		// Token: 0x06000A69 RID: 2665 RVA: 0x00304E43 File Offset: 0x00303043
		public TPlsqlCreateType_Placeholder(EDbVendor dbvendor) : base(dbvendor)
		{
			this.sqlstatementtype = ESqlStatementType.sstplsql_createtype_placeholder;
		}

		// Token: 0x06000A6A RID: 2666 RVA: 0x00304E5C File Offset: 0x0030305C
		public override int doParseStatement(TCustomSqlStatement psql)
		{
			if (this.rootNode == null)
			{
				return -1;
			}
			base.doParseStatement(psql);
			if (this.rootNode is TPlsqlCreateType)
			{
				this.objectStatement = (TPlsqlCreateType)this.rootNode;
				this.kind = this.objectStatement.Kind;
				this.createdType = EOracleCreateType.octObject;
				if (this.kind == 5)
				{
					this.createdType = EOracleCreateType.octIncomplete;
				}
				this.objectStatement.doParseStatement(this);
			}
			else if (this.rootNode is TPlsqlVarrayTypeDefStmt)
			{
				this.kind = 6;
				this.createdType = EOracleCreateType.octVarray;
				this.varrayStatement = (TPlsqlVarrayTypeDefStmt)this.rootNode;
				this.varrayStatement.doParseStatement(this);
			}
			else if (this.rootNode is TPlsqlTableTypeDefStmt)
			{
				this.kind = 7;
				this.createdType = EOracleCreateType.octNestedTable;
				this.nestedTableStatement = (TPlsqlTableTypeDefStmt)this.rootNode;
				this.nestedTableStatement.doParseStatement(this);
			}
			return 0;
		}

		// Token: 0x06000A6B RID: 2667 RVA: 0x00304F45 File Offset: 0x00303145
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x06000A6C RID: 2668 RVA: 0x00304F55 File Offset: 0x00303155
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x04001281 RID: 4737
		private EOracleCreateType createdType;

		// Token: 0x04001282 RID: 4738
		private int kind = 8;

		// Token: 0x04001283 RID: 4739
		private TPlsqlCreateType objectStatement;

		// Token: 0x04001284 RID: 4740
		private TPlsqlVarrayTypeDefStmt varrayStatement;

		// Token: 0x04001285 RID: 4741
		private TPlsqlTableTypeDefStmt nestedTableStatement;
	}
}
